package lessons.no7;

import java.io.File;
import java.io.FilenameFilter;
import java.util.Arrays;

public class N7_4_2 {
    public static void main(String[] args) {
        N7_4_2 obj = new N7_4_2();
        obj.testFilePth();
        //obj.testFile();

        //File file = new File("./");
        //obj.fileDir(file);
    }

    public void testFilePth()
    {
        // 创建File对象，并指定文件路径
		File file = new File("lessons");
		// 判断是否是目录
		if (file.isDirectory()) {
			// 获取目录中的所有文件的名称
			String[] fileNames = file.list();
			// 对指定路径下的文件或目录进行遍历
			Arrays.stream(fileNames)
				  .forEach(f -> System.out.println(f));
		}
    }

    public void testFile()
    {
        // 创建File对象，并指定文件路径
		File file = new File("./");
		// 判断是否是目录
		if (file.isDirectory()) {
			// 使用Lambda表达式过滤目录中所有以.txt结尾的文件的名称
			FilenameFilter filter  = new FilenameFilter()
			{

				@Override
				public boolean accept(File arg0, String arg1) {
					// TODO Auto-generated method stub
					return arg1.endsWith(".txt");
				}
				
			};
			String[] fileNames = file.list(filter);
			
			/** 
			String[] fileNames = file.list(
								(dir,name) -> name.endsWith(".txt"));
								**/
			// 对指定路径下的文件或目录进行遍历
			Arrays.stream(fileNames)
				  .forEach(f -> System.out.println(f));
		}
    }

    // 遍历目录及其子目录
	public void fileDir(File file) {
		// 获得目录下所有文件,并赋给数组
		File[] listFiles = file.listFiles();
		// 循环遍历数组
		for (File files : listFiles) {
			// 如果遍历的是目录，则递归调用fileDir()方法
			if(files.isDirectory()){
				fileDir(files);
			}
			// 输出文件路径
			System.out.println(files);
		}
	}
}
